今天來講到第三題練習題
題目的大意就是:
有一個小弟弟正在玩積木,然後說他蓋了一個城牆。
但他姐姐說,那才不是城牆,城牆應該要一樣高才對。
所以我們必須把積木排成同樣高度的城牆
然後題目給的輸入是
6
5 2 4 1 7 5
0
程式碼如下:
import java.util.*;
import static java.lang.System.*;
public class main{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int time = 0;
while(sc.hasNext())
{
time++;
int a = sc.nextInt();
if(a == 0)
{
continue;
}
int arr[] = new int[a];
for(int i = 0 ; i < a ; i++)
{
arr[i] = sc.nextInt();
}
int total = 0;
for(int i : arr)
{
total += i;
}
total /= a;
int sum = 0;
for(int i : arr)
{
if(total - i >= 0)
sum += (total - i);
}
System.out.printf("Set #%d\r\n",time);
System.out.println("The minimum number of moves is "+sum+".");
System.out.printf("\r\n");
}
}
};
為了怕新的東西有點生疏,這次再複習一次
Scanner:取得使用者輸入的數字或字串。System.in就是系統的輸入。
hasNext:常用判斷是否還有輸入的數字或字串。
nextInt:只讀取數字,剩下"\n"還沒有讀取。
total /= a 就是 total = total/a。int a = sc.nextInt();
設定一個整數a,a等於取到的數值
int arr[] = new int[a];
for(int i = 0 ; i < a ; i++)
{
arr[i] = sc.nextInt();
}
設定一個陣列,陣列裡有a個格子,
然後設定一個整數i,此整數小於a,arr[i]指的是個格子的編號
arr[i] = sc.nextInt()是設定編號i的值
int total = 0;
for(int i : arr)
{
total += i;
}
total /= a;
設定一個整數total,total等於陣列裡整數i的總和
然後再把total除以a取得平均值
int sum = 0;
for(int i : arr)
{
if(total - i >= 0)
sum += (total - i);
}
設定一個整數sum,sum等於sum + (total - i),算出需要移動幾次。
最後會輸出最少需要的移動次數
結果如下: